
package siafi.db;


import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Logger;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;


public class ConexionDB {

	private static Logger log = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
	private static ConexionDB conexionDB = null;

	private ConexionDB () {
	}

	public static ConexionDB getInstance() {
		if(conexionDB == null) {
			conexionDB = new ConexionDB();
		}
		return conexionDB;
	}
	/**
	 * Metodo para crear y configurar una conexion!
	 *
	 * @return Se devuelve un objeto Connection con la conexion ya configurada!
	 *
	 * @throws NamingException !
	 */
	public Connection getConnection() throws NamingException {
		Connection cnn = null;
		try {
			InitialContext initialContext = new InitialContext();
		//tomcat
			//DataSource ds = (DataSource) initialContext.lookup("java:comp/env/jdbc/recibosSiafiDS");
			DataSource ds = (DataSource) initialContext.lookup("java:comp/env/siafiweb_produccion");
	//JBoss
			//DataSource ds = (DataSource) initialContext.lookup("java:/jdbc/recibosSiafiDS");
			try {
				cnn = ds.getConnection();
			} catch (SQLException sqle) {
				log.info(sqle.getMessage());
				for(StackTraceElement elem : sqle.getStackTrace()) {
					log.info(elem.toString());
				}
				log.info(
						"Error obteniendo la conexión en ConexionDB: " +
						sqle.getMessage());
			}
		} catch (NamingException ne) {
			log.info(ne.getMessage());
			for(StackTraceElement elem : ne.getStackTrace()) {
				log.info(elem.toString());
			}
			log.info(
					"Error en el método getConnection() de la clase ConexionDB: " +
					ne.getMessage());
		}
		return cnn;
	}
}
